/* 
 * File:   mthParticulas.h
 * Author: Dr. Juan Carlos Fernandez Toledano
 *
 * Created on 22 de noviembre de 2011, 18:47
 */

#ifndef OPPARTICULAS_H
#define	OPPARTICULAS_H

double boundary(double dx, double lx) {
    if(dx>0.5*lx){dx-=lx;}
    if(dx<-0.5*lx) {dx+=lx;}
    return dx;
}

double distancia(particula part1,particula part2,double *dr, parametros param)
{

    ///Calcula la distancia entre las particulas i y j
    ///Consideramos condiciones de contorno periodicas en el plano xy
    ///pero no en el z donde se encuentran las paredes en el caso confinado

    double dis2=0;
    int confined;
    
#ifdef CONFINED
    confined=2;
#else
    confined=3;
#endif

    for(int i=0;i<3;i++)
    {
        dr[i]=part2.pos[i]-part1.pos[i];
        if (i<confined)
        {
            /*Condiciones de contorno periodicas*/
            dr[i]=boundary(dr[i], param.lbox[i]);
        }
        dis2+=dr[i]*dr[i];
    }
    return sqrt(dis2);
}

#endif	/* OPPARTICULAS_H */

